#include <cmath>
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
#include <map>
#include <set>
#include <cstring>
#define endl "\n"
using namespace std;
const int N=10;
char ch[N][N];
int n,m,k,bx,by;
bool bb;
int fangxiang[4][2]={1,0,-1,0,0,1,0,-1};
bool panduan(int x,int y)
{
	if(x<0||x>=n||y<0||y>=m||ch[x][y]=='X')
	return 0;
	else
	return 1;
}
void dfs(int x,int y,int kk)
{
	if(bb||x==bx&&y==by&&kk==k)
	{
        bb=1;
		return ;
	}
	//for()return ;
	int pp=k-kk-abs(x-bx)-abs(y-by);//剪枝
	if(pp<0||pp&1)
    {
        return ;
    }
	for(int i=0;i<4;i++)
	{
		int xx=x+fangxiang[i][0];
		int yy=y+fangxiang[i][1];
		if(panduan(xx,yy))
		{
			ch[xx][yy]='X';
			dfs(xx,yy,kk+1);
			ch[xx][yy]='.';
			if(bb)
                return ;
		}
	}
}

int main()
{
    while(cin>>n>>m>>k)
    {
        if(n==0&&m==0&&k==0)
            return 0;
        int ax,ay;
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                cin>>ch[i][j];
                if(ch[i][j]=='S')
                {
                    ax=i;
                    ay=j;
                }
                if(ch[i][j]=='D')
                {
                    bx=i;
                    by=j;
                }
            }
        }

        bb=0;
        ch[ax][ay]='X';
        dfs(ax,ay,0);
        if(bb)
        cout<<"YES"<<endl;
        else
        cout<<"NO"<<endl;
    }
	return 0;
}
